home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Ham Radio
/
Ham Radio CD-ROM (Emerald Software) (1995).ISO
/
ant
/
antenna2
/
woodls.bas
< prev
next >
Wrap
BASIC Source File
|
1986-09-08
|
4KB
|
133 lines
10 CLS:KEY OFF
20 REM WOODWARD-LAWSON SAMPLING METHOD
30 REM LINE SOURCE SYNTHESIS
40 REM 7/14/86
50 REM AHMAD FAIZAL MOHD ZAIN
60 '
70 PI=3.1415926#
80 YMAX=0:YMIN=0
90 INPUT"LINE SOURCE LENGTH ";L
100 NMAX=L
110 DIM W(2*NMAX+1),A(2*NMAX+1),ANG(2*NMAX+1),F(200)
120 DIM Y(2000),I(2000),PHI(500)
130 CLS:PRINT"Sample point"," w(n)","angle(N)","desired"
140 FOR N=-NMAX TO NMAX
150 I=N+NMAX
160 W(I)=N/L
170 X=W(I)
180 IF X*X=1 AND X>0 THEN ANG(I)=0:GOTO 210
190 IF X*X=1 AND X<0 THEN ANG(I)=-180:GOTO 210
200 ACOS=1.570796-ATN(X/SQR(1-X*X)):ANG(I)=180*ACOS/PI
210 PRINT I,:PRINT USING "##.## ####.## ";W(I);ANG(I),:INPUT" ";A(I)
220 NEXT N
230 '
240 GOSUB 780
250 CLS:GOSUB 1160
260 '
270 FOR THETA=0 TO 180
280 W=COS(THETA*PI/180)
290 F(THETA)=0
300 FOR N=-NMAX TO NMAX
310 A=PI*L*(W-W(N+NMAX))
320 IF A=0 THEN F(THETA)=F(THETA)+A(N+NMAX):GOTO 340
330 F(THETA)=F(THETA)+A(N+NMAX)*SIN(A)/A
340 NEXT N
350 Y(THETA)=F(THETA)
360 IF Y(THETA)>YMAX THEN YMAX=Y(THETA)
370 IF Y(THETA)<YMIN THEN YMIN=Y(THETA)
380 NEXT THETA
390 '
395 KK=1
400 GOSUB 850 'SET UP SCREEN
410 GOSUB 930 'PLOT PATTERN
420 GOSUB 1150
425 KK=0
430 '
440 ' TO CALCULATE CURRENTS
450 '
460 I=0
470 YMAX=0:YMIN=0
480 PMAX=0:PMIN=0
490 FOR S=-L/2 TO L/2 STEP L/100
500 I=I+1
510 CR=0:CI=0
520 FOR N=-NMAX TO NMAX
530 A=2*PI*W(N+NMAX)*S
540 CR=CR+A(N+NMAX)*COS(A)
550 CI=CI+A(N+NMAX)*SIN(A)
560 NEXT N
570 CR=CR/L:CI=CI/L
580 I(I)=SQR(CR*CR+CI*CI)
590 IF CR=0 AND CI>0 THEN PHI(I)=90:GOTO 630
600 IF CR=0 AND CI<0 THEN PHI(I)=270:GOTO 630
610 IF CR=0 AND CI=0 THEN PHI(I)=0:GOTO 630
620 PHI=ATN(CI/CR):PHI(I)=PHI*180/PI
630 Y(I)=I(I)
640 IF Y(I)>YMAX THEN YMAX=Y(I)
650 IF Y(I)<YMIN THEN YMIN=Y(I)
660 IF PHI(I)>PMAX THEN PMAX=PHI(I)
670 IF PHI(I)<PMIN THEN PMIN=PHI(I)
680 NEXT S
690 '
693 GOSUB 850
695 GOSUB 1040
700 GOSUB 1180
710 '
720 END
730 INPUT"DO YOU WANT TO MAKE ANY CHANGES";AN$
740 IF AN$="N" OR AN$="n" THEN RETURN
750 INPUT"TYPE SAMPLING POINT TO CHANGE ";Q
760 PRINT Q,W(Q),ANG(Q),A(Q),:INPUT A(Q)
770 '
780 CLS:PRINT"Sample point"," w(n)","angle(N)","desired"
790 FOR N=-NMAX TO NMAX:I=N+NMAX
800 PRINT I,:PRINT USING "##.## ####.## ";W(I);ANG(I),:PRINT,A(I)
810 NEXT N
820 PRINT
830 GOSUB 730
840 RETURN
850 ' Set up Screen for plotting
860 SCREEN 2:CLS
870 FOR K=7 TO 67 STEP 10:LOCATE 20,K:PRINT"+";:NEXT K
875 IF KK=1 GOTO 890
880 FOR K=4 TO 20 STEP 4:LOCATE K,67:PRINT"-":NEXT K
890 VIEW (52,28)-(530,154),,1
900 LINE (239,0)-(239,154)
910 RETURN
920 '
930 PSET (0,Y(0))
940 WINDOW (0,YMIN)-(180,YMAX)
945 LINE (0,0)-(180,0),,,&HF0F0
946 PRESET (0,1)
947 LINE (0,1)-(180,1),,,&HF0F0
949 PRESET (0,Y(0))
950 FOR X=0 TO 180
960 LINE -(X,Y(X))
970 NEXT X
980 LOCATE 3,20:PRINT"MAGNITUDE OF SYNTHESISED PATTERN"
1000 LOCATE 21,6:PRINT"180":LOCATE 21,37:PRINT"90":LOCATE 21,67:PRINT"0"
1010 RETURN
1020 '
1030 ' plot current distribution
1040 LOCATE 3,20:PRINT"MAGNITUDE OF CURRENT DISTRIBUTION"
1050 '
1060 WINDOW (1,YMIN)-(I,YMAX)
1070 '
1080 PSET (1,Y(1))
1090 FOR X=1 TO I
1100 LINE -(X,Y(X))
1110 NEXT X
1120 LOCATE 21,6:PRINT-L/2:LOCATE 21,37:PRINT"0":LOCATE 21,66:PRINT L/2
1130 FOR K=4 TO 20 STEP 4:LOCATE K,68:PRINT(20-K)/16:NEXT K
1140 RETURN
1150 LOCATE 24,1:PRINT"TYPE <RETURN> TO CONTINUE...";:INPUT W:SCREEN 0,0
1160 PRINT"I'm doing some calculation. Please wait..."
1170 RETURN
1180 T$="DO YOU WANT TO RUN THIS PROGRAM AGAIN (Y/N)? ":LC=23:GOSUB 1240
1190 AN$=INKEY$
1200 IF AN$="Y" OR AN$="y" THEN RUN
1210 IF AN$="N" OR AN$="n" THEN END
1220 GOTO 1180
1230 :
1240 LOCATE LC,(80-LEN(T$))/2+1:PRINT T$:RETURN 'SUBROUTINE TO CENTRE TEXT